# Generated from .\miniSysY.g4 by ANTLR 4.9.3
from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
    from typing import TextIO
else:
    from typing.io import TextIO



def serializedATN():
    with StringIO() as buf:
        buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\26")
        buf.write("\u0093\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7")
        buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r")
        buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23")
        buf.write("\t\23\4\24\t\24\4\25\t\25\3\2\3\2\3\3\3\3\3\4\3\4\3\4")
        buf.write("\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\b\3")
        buf.write("\b\3\b\3\b\3\b\3\t\3\t\3\n\3\n\3\n\5\nI\n\n\3\13\3\13")
        buf.write("\7\13M\n\13\f\13\16\13P\13\13\3\f\3\f\7\fT\n\f\f\f\16")
        buf.write("\fW\13\f\3\r\3\r\6\r[\n\r\r\r\16\r\\\3\16\3\16\3\16\3")
        buf.write("\16\5\16c\n\16\3\17\3\17\3\20\3\20\3\21\3\21\5\21k\n\21")
        buf.write("\3\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\7\24")
        buf.write("w\n\24\f\24\16\24z\13\24\3\24\3\24\3\24\5\24\177\n\24")
        buf.write("\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\7\25\u008a")
        buf.write("\n\25\f\25\16\25\u008d\13\25\3\25\3\25\3\25\3\25\3\25")
        buf.write("\4x\u008b\2\26\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13")
        buf.write("\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26")
        buf.write("\3\2\4\5\2\62;CHch\5\2\13\f\17\17\"\"\2\u009e\2\3\3\2")
        buf.write("\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2")
        buf.write("\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2")
        buf.write("\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35")
        buf.write("\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2")
        buf.write("\2\'\3\2\2\2\2)\3\2\2\2\3+\3\2\2\2\5-\3\2\2\2\7/\3\2\2")
        buf.write("\2\t\63\3\2\2\2\138\3\2\2\2\r:\3\2\2\2\17<\3\2\2\2\21")
        buf.write("C\3\2\2\2\23H\3\2\2\2\25J\3\2\2\2\27Q\3\2\2\2\31X\3\2")
        buf.write("\2\2\33b\3\2\2\2\35d\3\2\2\2\37f\3\2\2\2!j\3\2\2\2#l\3")
        buf.write("\2\2\2%n\3\2\2\2\'r\3\2\2\2)\u0082\3\2\2\2+,\7*\2\2,\4")
        buf.write("\3\2\2\2-.\7+\2\2.\6\3\2\2\2/\60\7k\2\2\60\61\7p\2\2\61")
        buf.write("\62\7v\2\2\62\b\3\2\2\2\63\64\7o\2\2\64\65\7c\2\2\65\66")
        buf.write("\7k\2\2\66\67\7p\2\2\67\n\3\2\2\289\7}\2\29\f\3\2\2\2")
        buf.write(":;\7\177\2\2;\16\3\2\2\2<=\7t\2\2=>\7g\2\2>?\7v\2\2?@")
        buf.write("\7w\2\2@A\7t\2\2AB\7p\2\2B\20\3\2\2\2CD\7=\2\2D\22\3\2")
        buf.write("\2\2EI\5\25\13\2FI\5\27\f\2GI\5\31\r\2HE\3\2\2\2HF\3\2")
        buf.write("\2\2HG\3\2\2\2I\24\3\2\2\2JN\5\35\17\2KM\5!\21\2LK\3\2")
        buf.write("\2\2MP\3\2\2\2NL\3\2\2\2NO\3\2\2\2O\26\3\2\2\2PN\3\2\2")
        buf.write("\2QU\7\62\2\2RT\5\37\20\2SR\3\2\2\2TW\3\2\2\2US\3\2\2")
        buf.write("\2UV\3\2\2\2V\30\3\2\2\2WU\3\2\2\2XZ\5\33\16\2Y[\5#\22")
        buf.write("\2ZY\3\2\2\2[\\\3\2\2\2\\Z\3\2\2\2\\]\3\2\2\2]\32\3\2")
        buf.write("\2\2^_\7\62\2\2_c\7z\2\2`a\7\62\2\2ac\7Z\2\2b^\3\2\2\2")
        buf.write("b`\3\2\2\2c\34\3\2\2\2de\4\63;\2e\36\3\2\2\2fg\4\629\2")
        buf.write("g \3\2\2\2hk\7\62\2\2ik\5\35\17\2jh\3\2\2\2ji\3\2\2\2")
        buf.write("k\"\3\2\2\2lm\t\2\2\2m$\3\2\2\2no\t\3\2\2op\3\2\2\2pq")
        buf.write("\b\23\2\2q&\3\2\2\2rs\7\61\2\2st\7\61\2\2tx\3\2\2\2uw")
        buf.write("\13\2\2\2vu\3\2\2\2wz\3\2\2\2xy\3\2\2\2xv\3\2\2\2y~\3")
        buf.write("\2\2\2zx\3\2\2\2{\177\7\f\2\2|}\7\17\2\2}\177\7\f\2\2")
        buf.write("~{\3\2\2\2~|\3\2\2\2\177\u0080\3\2\2\2\u0080\u0081\b\24")
        buf.write("\2\2\u0081(\3\2\2\2\u0082\u0083\7\61\2\2\u0083\u0084\7")
        buf.write(",\2\2\u0084\u008b\3\2\2\2\u0085\u008a\13\2\2\2\u0086\u008a")
        buf.write("\7\f\2\2\u0087\u0088\7\61\2\2\u0088\u008a\7t\2\2\u0089")
        buf.write("\u0085\3\2\2\2\u0089\u0086\3\2\2\2\u0089\u0087\3\2\2\2")
        buf.write("\u008a\u008d\3\2\2\2\u008b\u008c\3\2\2\2\u008b\u0089\3")
        buf.write("\2\2\2\u008c\u008e\3\2\2\2\u008d\u008b\3\2\2\2\u008e\u008f")
        buf.write("\7,\2\2\u008f\u0090\7\61\2\2\u0090\u0091\3\2\2\2\u0091")
        buf.write("\u0092\b\25\2\2\u0092*\3\2\2\2\r\2HNU\\bjx~\u0089\u008b")
        buf.write("\3\b\2\2")
        return buf.getvalue()


class miniSysYLexer(Lexer):

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]

    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    Number = 9
    Decimal_const = 10
    Octal_const = 11
    Hexadecimal_const = 12
    Hexadecimal_prefix = 13
    Nonzero_digit = 14
    Octal_digit = 15
    Digit = 16
    Hexadecimal_digit = 17
    WHITE_SPACE = 18
    Annotation1 = 19
    Annotation2 = 20

    channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "'('", "')'", "'int'", "'main'", "'{'", "'}'", "'return'", "';'" ]

    symbolicNames = [ "<INVALID>",
            "Number", "Decimal_const", "Octal_const", "Hexadecimal_const", 
            "Hexadecimal_prefix", "Nonzero_digit", "Octal_digit", "Digit", 
            "Hexadecimal_digit", "WHITE_SPACE", "Annotation1", "Annotation2" ]

    ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", 
                  "T__7", "Number", "Decimal_const", "Octal_const", "Hexadecimal_const", 
                  "Hexadecimal_prefix", "Nonzero_digit", "Octal_digit", 
                  "Digit", "Hexadecimal_digit", "WHITE_SPACE", "Annotation1", 
                  "Annotation2" ]

    grammarFileName = "miniSysY.g4"

    def __init__(self, input=None, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.9.3")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None


